#include <stdio.h>
#include <string.h>
#include <stdarg.h>

void print_lnf_without_message(char* format, ...) {
    va_list args;
    va_start(args, format);
    vprintf(format, args);
    printf("\n");
    va_end(args);
}

void print_lnf(char *format, ...) {
    va_list args;
    va_start(args, format);
    char *output_ctrl_str = strcat("(%s:%d) %s : ", format);
    output_ctrl_str = strcat(output_ctrl_str, "\n");
    printf(output_ctrl_str, __FILE__, __LINE__, __FUNCTION__, args);
    va_end(args);
}

#define PRINT_LNF(format, ...) printf("("__FILE__":%d) %s:"format"\n", __LINE__, __FUNCTION__, ##__VA_ARGS__)

#define PRINT_INT(value) PRINT_LNF(#value": %d", value)

#define PRINT_CHAR(value) PRINT_LNF(#value": %c", value)

int main() {
    PRINT_LNF("%d", 123);
    PRINT_INT(4+5);
    PRINT_CHAR('a');
    return 0;
}
